home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / CUGUK / APPLICAT / C034.ZIP / DBQAMS.C < prev    next >
Text File  |  2010-11-01  |  3KB  |  193 lines

  1. /* SDB - AMSTRAD specific procedures and error messages */
  2.  
  3. #include "bdscio.h"
  4. #include "dbqdefs.h"
  5.  
  6. int getcx(fp)
  7.     FILE *fp;
  8. {
  9.     int ch, i;
  10.  
  11.     if (fp!=STDIN)
  12.         if ((ch = getc(fp)) == '\r') {
  13.             if (dbv_verify) {
  14.                 putchar(ch);
  15.                 putchar('\n');
  16.                 }
  17.             return (getc(fp));
  18.             }
  19.         else {
  20.             if (dbv_verify)
  21.                 putchar(ch);
  22.             return (ch);
  23.         }
  24.  
  25.     if (*pbuf > 0)
  26.         return *pbuf++;
  27.  
  28.     pbuf = gbuf;
  29. /* TEMP
  30.     for (i = 0; (ch = getc(fp)) != -1; )
  31.         if (i < LINEMAX) {
  32.             if (ch == ESC) {
  33.                 i = 0;
  34.                 putchar('\n');
  35.                 fflush(STDOUT);
  36.             }
  37.             else
  38.             if (ch == BS) {
  39.                 if (i > 0) {
  40.                     printf("\010\033\116\010\033\116");
  41.             /* That should be 010 020 010 020 for CPM 2.2 */
  42.  
  43.                     i--;
  44.                     }
  45.                 }
  46.                 else
  47.                     gbuf[i++] = ch;
  48.             if (ch == '\n') break;
  49.             }
  50.         else {
  51.             printf("*** line too long ***\nRetype> ");
  52.             i = 0;
  53.         }
  54.     gbuf[i] = EOS;
  55. */
  56.     linein(gbuf);
  57.     return getcx(fp);
  58. }
  59.  
  60. linein(lbuf)
  61. char *lbuf;
  62. {
  63.     char ibuf[256];
  64.     int ilen;
  65.  
  66.     ibuf[0] = LINEMAX;
  67.     ibuf[1] = 1;
  68.     ibuf[2] = 0;
  69.     bdos(10,&ibuf);
  70.     ilen = ibuf[1];
  71.     ibuf[ilen+3] = EOS;
  72.     ibuf[ilen+2] = 10;
  73.     strcpy(lbuf,&ibuf[2]);
  74.     if (dbv_logging)
  75.         fputs(lbuf,dbv_lfp);
  76.     putchar('\n');
  77.  
  78. strncpy(to, from, n)
  79.     char *to, *from;
  80.     int n;
  81. {
  82.     char *cp;
  83.  
  84.     for( cp=to; n-- && (*cp++ = *from++); ) ;
  85.     if (n < 0)
  86.         *cp = 0;
  87.     return (to);
  88. }
  89. /*    We'll use our own, thanks
  90. int strncmp(s1, s2, n)
  91.   char *s1, *s2;
  92. {
  93.   if (!n) return 0;
  94.   while (*s1 == *s2)
  95.     {
  96.       if ( ! *s1) return 0;
  97.       if ( ! --n) break;
  98.       ++s1;  ++s2;
  99.     }
  100.   return *s1 - *s2;
  101. }
  102. */
  103. strncmp(s1, s2, n)
  104.     char *s1,*s2;
  105.     int n;
  106. {
  107.     for ( ; n-- && (*s1 == *s2); s2++ )
  108.         if (!*s1++)
  109.             return (0);
  110.     if (n < 0)
  111.         return 0;
  112.     if (*s1 < *s2)
  113.         return -1;
  114.     return 1;
  115. }
  116.  
  117. /*    error routine        */
  118.  
  119.  
  120. char *db_ertxt(msg)
  121.  int msg;
  122. {
  123.     char *txt;
  124.  
  125.     switch (msg) {
  126.     case INSMEM:
  127.         txt = "memory full";
  128.         break;
  129.     case RELFNF:
  130.         txt = "database file not found";
  131.         break;
  132.     case BADHDR:
  133.         txt = "bad file header";
  134.         break;
  135.     case TUPINP:
  136.         txt = "reading record";
  137.         break;
  138.     case TUPOUT:
  139.         txt = "writing record";
  140.         break;
  141.     case RELFUL:
  142.         txt = "database full";
  143.         break;
  144.     case RELCRE:
  145.         txt = "creating database";
  146.         break;
  147.     case DUPATT:
  148.         txt = "field name duplicated";
  149.         break;
  150.     case MAXATT:
  151.         txt = "too many fields";
  152.         break;
  153.     case INSBLK:
  154.         txt = "disk full";
  155.         break;
  156.     case SYNTAX:
  157.         txt = "syntax error";
  158.         break;
  159.     case ATUNDF:
  160.         txt = "field not defined";
  161.         break;
  162.     case ATAMBG:
  163.         txt = "field name ambiguous";
  164.         break;
  165.     case RLUNDF:
  166.         txt = "database name undefined";
  167.         break;
  168.     case CDSIZE:
  169.         txt = "expression too complex";
  170.         break;
  171.     case INPFNF:
  172.         txt = "input file not found";
  173.         break;
  174.     case OUTCRE:
  175.         txt = "creating output file";
  176.         break;
  177.     case INDFNF:
  178.         txt = "command file not found";
  179.         break;
  180.     case BADSET:
  181.         txt = "set parameter unknown";
  182.         break;
  183.     default:
  184.         txt = "bad error number";
  185.         break;
  186.     }
  187.  
  188.     return (txt);
  189. }
  190. ADSET:
  191.         txt = "set parameter unknown";
  192.         b